<?php
header('content-type:text/html;charset=utf-8');
 
define("TOKEN", "wzrice"); //define your token
$wx = new wechatCallbackapiTest();
 
if($_GET['echostr']){
 $wx->valid(); //如果发来了echostr则进行验证
}else{
 $wx->responseMsg(); //如果没有echostr，则返回消息
}
 
 
class wechatCallbackapiTest{
 
 public function valid(){ //valid signature , option
 
  $echoStr = $_GET["echostr"];
  if($this->checkSignature()){ //调用验证字段
   echo $echoStr;
   exit;
  }
 }
 
 public function responseMsg(){
   
 //get post data, May be due to the different environments
  //$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据
  $postStr=file_get_contents('php://input');
  //echo $postStr;
  //extract post data
 if(!empty($postStr)){
     
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);
   $weekarray=array("日","一","二","三","四","五","六");
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"的公众号id
   $keyword = trim($postObj->Content); //消息内容
   $voiceword=trim($postObj->Recognition);
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型：文本
   $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";
   /*$textTpl="<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <ArticleCount>1</ArticleCount>
    <Articles>
    <item>
    <Title><![CDATA[%s]]></Title> 
    <Description><![CDATA[%s]]></Description>
    <PicUrl><![CDATA[%s]]></PicUrl>
    <Url><![CDATA[%s]]></Url>
    </item>
    </Articles>
    </xml>";*/
  if($keyword == 'hehe'){
    $contentStr = 'hello world!!!';
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();            
   }else{
    $word=$voiceword?$voiceword:$keyword;
    $contentStr = '今天是'."星期".$weekarray[date("w")]."\n".$word."\n此功能正在开发中。。。很快就上线喽！";
    $contentStr=$contentStr."1挪亚的儿子闪，含，雅弗的后代，记在下面。洪水以后，他们都生了儿子。
    2雅弗的儿子是歌篾，玛各，玛代，雅完，土巴，米设，提拉。
    3歌篾的儿子是亚实基拿，利法，陀迦玛。
    4雅完的儿子是以利沙，他施，基提，多单。
    5这些人的后裔，将各国的地土，海岛，分开居住，各随各的方言，宗族立国。
    6含的儿子是古实，麦西，弗，迦南。
    7古实的儿子是西巴，哈腓拉，撒弗他，拉玛，撒弗提迦。拉玛的儿子是示巴，底但。
    8古实又生宁录，他为世上英雄之首。
    9他在耶和华面前是个英勇的猎户，所以俗语说，像宁录在耶和华面前是个英勇的猎户。
    10他国的起头是巴别，以力，亚甲，甲尼，都在示拿地。
    11他从那地出来往亚述去，建造尼尼微，利河伯，迦拉，
    12和尼尼微，迦拉中间的利鲜，这就是那大城。
    13麦西生路低人，亚拿米人，利哈比人，拿弗土希人，
    14帕斯鲁细人，迦斯路希人，迦斐托人。从迦斐托出来的有非利士人。
    15迦南生长子西顿，又生赫
    16和耶布斯人，亚摩利人，革迦撒人，
    17希未人，亚基人，西尼人，
    18亚瓦底人，洗玛利人，哈马人，后来迦南的诸族分散了。
    19迦南的境界是从西顿向基拉耳的路上，直到迦萨，又向所多玛，蛾摩拉，押玛，洗扁的路上，直到拉沙。
    20这就是含的后裔，各随他们的宗族，方言，所住的地土，邦国。
    21雅弗的哥哥闪，是希伯子孙之祖，他也生了儿子。
    22闪的儿子是以拦，亚述，亚法撒，路德，亚兰。
    23亚兰的儿子是乌斯，户勒，基帖，玛施。
    24亚法撒生沙拉。沙拉生希伯。
    25希伯生了两个儿子，一个名叫法勒（法勒就是分的意思），因为那时人就分地居住。法勒的兄弟名叫约坍。
    26约坍生亚摩答，沙列，哈萨玛非，耶拉，
    27哈多兰，乌萨，德拉，
    28俄巴路，亚比玛利，示巴，
    29阿斐，哈腓拉，约巴，这都是约坍的儿子。
    30他们所住的地方，是从米沙直到西发东边的山。
    31这就是闪的子孙，各随他们的宗族，方言，所住的地土，邦国。
    32这些都是挪亚三个儿子的宗族，各随他们的支派立国。洪水以后，他们在地上分为邦国。";
    //$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr,"","http://17dsj.com/pic/1.jpg","http://ttdsj.net");
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    //echo "fdsafdsa";
    exit();
   }
 
  }else {
   echo "";
   exit;
  }
 }
  
 //验证字段
 private function checkSignature(){
 
  $signature = $_GET["signature"];
  $timestamp = $_GET["timestamp"];
  $nonce = $_GET["nonce"]; 
    
 $token = TOKEN;
 $tmpArr = array($token, $timestamp, $nonce);
 sort($tmpArr);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );
  
 if( $tmpStr == $signature ){
 return true;
 }else{
 return false;
 }
 }
}
?>